package com.kinyx.framework.vo;

import java.util.Locale;
import java.util.Map;

import com.kinyx.framework.annotation.assist.CanNotNull;
import com.kinyx.framework.annotation.assist.CanNull;
import com.kinyx.framework.exception.IErrorCode;

import lombok.Getter;

/**
 * 输出数据
 * @param <D> 响应结果数据集泛型
 */
@Getter
public class OutData<D> {

	/** 错误编码 */
	private int errorCode;
	/** 错误信息 */
	private String errorMessage;
	/** 响应结果数据集 */
	private D datas;

	/**
	 * 构造方法
	 * @param locale 国际化
	 * @param errorCode 错误编码
	 * @param params 错误信息替换所需的参数
	 * @param datas 响应结果数据集
	 */
	private OutData(@CanNull final Locale locale, @CanNotNull final IErrorCode errorCode, @CanNull final Map<String, Object> params, @CanNull final D datas) {
		this.errorCode = errorCode.getErrorCode();
		this.errorMessage = errorCode.getErrorMessage(locale, params);
		this.datas = datas;
	}

}
